home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 19 / CU Amiga Magazine's Super CD-ROM 19 (1998)(EMAP Images)(GB)[!][issue 1998-02].iso / CUCD / Programming / LEDA / incl / LEDA.020+881 / vector.h < prev    next >
C/C++ Source or Header  |  1994-08-05  |  2KB  |  91 lines

  1. /*******************************************************************************
  2. +
  3. +  LEDA  3.1c
  4. +
  5. +
  6. +  vector.h
  7. +
  8. +
  9. +  Copyright (c) 1994  by  Max-Planck-Institut fuer Informatik
  10. +  Im Stadtwald, 6600 Saarbruecken, FRG     
  11. +  All rights reserved.
  12. *******************************************************************************/
  13.  
  14.  
  15. #ifndef LEDA_VECTOR_H
  16. #define LEDA_VECTOR_H
  17.  
  18. //------------------------------------------------------------------------------
  19. //  vectors
  20. //------------------------------------------------------------------------------
  21.  
  22.  
  23. #include <LEDA/basic.h>
  24.  
  25.  
  26. class vector
  27. {
  28.   friend class matrix;
  29.  
  30.   double* v;
  31.   int d;
  32.  
  33.   void check_dimensions(const vector&) const;
  34.  
  35. public:
  36.  
  37.   vector(int=0); 
  38.   vector(double, double);
  39.   vector(double, double, double);
  40.   vector(const vector&);
  41.  ~vector(); 
  42.  
  43.   double length() const;
  44.   
  45.   int    dim()    const { return d; }
  46.   vector norm()   const { return *this/length(); }
  47.   
  48.   double angle(const vector&) const; 
  49.   
  50.   vector& operator=(const vector&);
  51.   
  52.   double& operator[](int);
  53.   
  54.   double  operator[](int) const;
  55.  
  56.   vector& operator+=(const vector&);
  57.   vector& operator-=(const vector&);
  58.   
  59.   vector  operator+(const vector&) const;
  60.   vector  operator-(const vector&) const;
  61.   double  operator*(const vector&) const;
  62.   vector  operator-() const;
  63.   vector  operator*(double)        const;
  64.   vector  operator/(double)        const;
  65.   
  66.   int     operator==(const vector&) const;
  67.   int     operator!=(const vector& w)  const { return !(*this == w); }
  68.   
  69.   /*
  70.   friend vector operator*(double f, const vector& v);
  71.   friend vector operator/(const vector& v, double f);
  72.   */
  73.   
  74.   
  75.   friend ostream& operator<<(ostream& o, const vector& v);
  76.   friend istream& operator>>(istream& i, vector& v);
  77.  
  78.   friend int  compare(const vector&, const vector&);
  79.  
  80.   LEDA_MEMORY(vector)
  81.  
  82. };
  83.  
  84. inline void Print(const vector& v, ostream& out=cout) { out << v; }
  85. inline void Read(vector& v, istream& in=cin)          { in >> v;  }
  86.  
  87. LEDA_TYPE_PARAMETER(vector)
  88.  
  89. #endif
  90.